widget: Only deny a sequence if it was previously claimed
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 2 Jun 2014 15:38:46 +0000 (17:38 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 3 Jun 2014 13:59:03 +0000 (15:59 +0200)
Before this change, a sequence being claimed deep in the event propagation
chain would make the sequence go denied on every ancestor, regardless of
previous state.

To make things more consistent, only deny the sequence if it was previously
claimed, so the behavior is the same for gesture groups within the widget
than for those outside the widget.

The gestures testsuite has been updated to reflect this new behavior.

gtk/gtkwidget.c
testsuite/gtk/gestures.c

index 6453059bbc7dc0f8baab615c4a32f72843344ce6..8b90c3c83198c630fa4c3df18c83ca9d09f275e4 100644 (file)
@@ -4287,6 +4287,9 @@ _gtk_widget_set_sequence_state_internal (GtkWidget             *widget,
           else
             continue;
         }
+      else if (!group &&
+               gtk_gesture_get_sequence_state (gesture, sequence) != GTK_EVENT_SEQUENCE_CLAIMED)
+        continue;
 
       g_signal_handler_block (data->controller, data->sequence_state_changed_id);
       retval = gtk_gesture_set_sequence_state (gesture, seq, gesture_state);
index 0bf3d023f752ed0210707c349199440c6754d17c..e1efddc363ec338027d9c8114fc099d269fe2111 100644 (file)
@@ -347,8 +347,6 @@ test_claim_capture (void)
                    "capture a1, "
                    "capture b1, "
                    "capture c1, "
-                   "b1 state denied, "
-                   "a1 state denied, "
                    "c1 state claimed");
 
   g_string_free (str, TRUE);
@@ -393,9 +391,6 @@ test_claim_target (void)
                    "capture b1, "
                    "capture c1, "
                    "target c2, "
-                   /* "c1 state denied, " ? */
-                   "b1 state denied, "
-                   "a1 state denied, "
                    "c2 state claimed");
 
   g_string_free (str, TRUE);
@@ -445,7 +440,6 @@ test_claim_bubble (void)
                    "c3 cancelled, "
                    "c2 cancelled, "
                    "c1 cancelled, "
-                   "a1 state denied, "
                    "b3 state claimed"
                    );
 
@@ -494,8 +488,6 @@ test_group (void)
                    "capture b1, "
                    "capture c1, "
                    "target c3, "
-                   "b1 state denied, "
-                   "a1 state denied, "
                    "c3 state claimed, "
                    "c2 state claimed, "
                    "target c2");